/* 引入mobx  action:动作  observable：装饰器  （useObservable:使数据变为响应式）  */
import { observable, action } from 'mobx';

/* 引入登录接口api */
import { login } from '../service/index';

/* 引入token配置文件 */
import { setToken, removeToken } from '../utils';

/* 从React Router v5.1.0开始，新增了useHistory钩子（hook），如果是使用React >16.8.0，编写以下函数组件，使用useHistory即可实现编程时页面跳转导航。 */
import { useHistory } from 'react-router-dom';


export default class User {
    /* 数据  (使用@observable时，在tsconfig.json里面设置 experimentalDecorators:true(消除警告)) */
    @observable
    isLogin = false

    /* 登录方法 */
    @action
    async loginAction(user_name: string, user_pwd: string) {
        /* 登录请求 */
        let result:any = await login(user_name, user_pwd);
        /* console.log(result); */

        /* 判断 */
        if (result) {
            /* 设置token */
            setToken(result.token);
            this.isLogin = true;
            return true;
        }
        return false;
    }

    /* token过期（移除token） */
    @action
    async logoutAction() {
        /* 使用钩子 */
        let history = useHistory();
        /* 移除token */
        removeToken();
        /*  */
        this.isLogin = false;
        /* 移除token跳转回登录页面 */
        history.replace('/user/login');
    }
}